#ifndef _I386_THREAD_H
#define _I386_THREAD_H

#include <stdint.h>
#include <types.h>

/* i386线程栈结构 */
typedef struct thread_stack {
    uint32_t ebp;
    uint32_t ebx;
    uint32_t edi;
    uint32_t esi;

    /* 首次运行指向kthread_func_t，其它时候指向switch_to的返回地址 */
    void (*eip) (thread_func_t *func, void *arg);

    uint32_t unused;
    thread_func_t *function;   // 线程要调用的函数
    void *arg;  // 线程携带的参数
} thread_stack_t;

#endif /* _I386_THREAD_H */